[アップデート] DocumentDB がクラスターの停止と起動をサポートするようになりました!
こんにちは、岩城です。
本日、DocumentDB でクラスターの停止と起動をサポートするアップデートがありましたので紹介します。
なにが嬉しいの?
これまでは DocumentDB を停止できず、全く利用していないけど削除はしたくないので起動し続けるといったケースで余分なコストが発生していました。 停止できるようになり、停止中はコストが発生しませんので嬉しいアップデートというわけです。 ただし、RDS と同様にメンテナンスの観点から 7 日後に自動的に起動されるので注意してください。
やってみた
本エントリの付録に DocumentDB のクラスター停止・起動を確認できる程度の CloudFormation テンプレートを載せました。 実際に動作確認してみたい方は参考にしてみてください。 ただし、利用料が発生しますのでご利用は計画的にお願いします。
マネジメントコンソール
クラスターを選択してアクション
からStop
を選択します。
最大 7 日間クラスターを停止でき、7 日経っても手動でクラスター起動しない場合は、自動的に起動されます。
Stop Cluster
を選択します。
インスタンスの停止に時間が掛かしますが、しばらくすると停止できました。
ちなみに、同様の手順で起動できます。こちらも起動までに時間が掛かりますが停止よりも短い印象です。
起動できました。
CLI
CLIも用意されています。
筆者の環境は以下のとおりです。
$ aws --version aws-cli/1.16.192 Python/3.7.3 Darwin/17.7.0 botocore/1.12.182
停止の場合
$ aws docdb stop-db-cluster --db-cluster-identifier sample-docdb-cluster
起動の場合
$ aws docdb start-db-cluster --db-cluster-identifier sample-docdb-cluster
おわりに
本エントリがどなたかのお役に立てれば幸いです。
付録
--- AWSTemplateFormatVersion: '2010-09-09' Description: DocumentDB Template Parameters: NameTagPrefix: Type: String Default: sample Description: Prefix of Name tags. VPCCIDR: Description: First and Second Octet of VPC, For example xxx.xxx (192.168 / 172.16-31 / 10.0-255) Type: String Default: '192.168' Mappings: StackConfig: SmapleVPC: CIDR: .0.0/16 SampleSubnet1: CIDR: .0.0/24 SampleSubnet2: CIDR: .1.0/24 SampleSubnet3: CIDR: .2.0/24 Resources: # VPC SmapleVPC: Type: AWS::EC2::VPC Properties: CidrBlock: !Sub ['${VPCCIDR}${Param1}', {Param1: !FindInMap [ StackConfig, SmapleVPC, CIDR ]}] EnableDnsSupport: 'true' EnableDnsHostnames: 'true' InstanceTenancy: default Tags: - Key: Name Value: !Sub ${NameTagPrefix}-subnet-1a # Subnet SampleSubnet1: Type: AWS::EC2::Subnet Properties: AvailabilityZone: 'ap-northeast-1a' CidrBlock: !Sub ['${VPCCIDR}${Param1}', {Param1: !FindInMap [ StackConfig, SampleSubnet1, CIDR ]}] Tags: - Key: Name Value: ${NameTagPrefix}-subnet-1 VpcId: !Ref SmapleVPC SampleSubnet2: Type: AWS::EC2::Subnet Properties: AvailabilityZone: 'ap-northeast-1c' CidrBlock: !Sub ['${VPCCIDR}${Param1}', {Param1: !FindInMap [ StackConfig, SampleSubnet2, CIDR ]}] Tags: - Key: Name Value: ${NameTagPrefix}-subnet-2 VpcId: !Ref SmapleVPC SampleSubnet3: Type: AWS::EC2::Subnet Properties: AvailabilityZone: 'ap-northeast-1d' CidrBlock: !Sub ['${VPCCIDR}${Param1}', {Param1: !FindInMap [ StackConfig, SampleSubnet3, CIDR ]}] Tags: - Key: Name Value: ${NameTagPrefix}-subnet-3 VpcId: !Ref SmapleVPC # DocumentDB DocDBSubnetGroup: Type: "AWS::DocDB::DBSubnetGroup" Properties: DBSubnetGroupDescription : !Sub ${NameTagPrefix}-subgrp DBSubnetGroupName : !Sub ${NameTagPrefix}-subgrp SubnetIds: - !Ref SampleSubnet1 - !Ref SampleSubnet2 - !Ref SampleSubnet3 Tags: - Key: Name Value: !Sub ${NameTagPrefix}-subgrp DocDBCluster: Type: "AWS::DocDB::DBCluster" DependsOn: - DocDBSubnetGroup Properties: DBClusterIdentifier : !Sub ${NameTagPrefix}-cluster DBSubnetGroupName : !Ref DocDBSubnetGroup MasterUsername : "samplemaster" MasterUserPassword : "samplepassword" Port : "27017" Tags: - Key: "Name" Value: !Sub ${NameTagPrefix}-docdb-cluster DocDBInstance1: Type: "AWS::DocDB::DBInstance" DependsOn: - DocDBCluster Properties: DBClusterIdentifier : !Ref DocDBCluster DBInstanceIdentifier : !Sub ${NameTagPrefix}-instance1 DBInstanceClass: "db.r5.large" DocDBInstance2: Type: "AWS::DocDB::DBInstance" DependsOn: - DocDBCluster Properties: DBClusterIdentifier : !Ref DocDBCluster DBInstanceIdentifier : !Sub ${NameTagPrefix}-instance2 DBInstanceClass: "db.r5.large"